package com.xingkeduo.util.tool;

/**
 * @author GJ
 * @time 2016年9月17日 下午1:33:31
 * @description
 */
public class RegularUtil {
	/**
	 * 是否是正整数
	 * 
	 * @author GJ
	 * @time 2017年7月6日 下午12:44:08
	 * @param arg
	 * @return
	 */
	public static boolean isPositiveInteger(Object arg) {
		return arg.toString().matches("[1-9][0-9]*");
	}

	/**
	 * 是否是验证码
	 * 
	 * @author GJ
	 * @time 2017年7月6日 下午12:44:24
	 * @param veriCode
	 * @return
	 */
	public static boolean isVeriCode(String veriCode) {
		return veriCode.matches("[0-9A-Za-z]{4}");
	}

	/**
	 * 是否是图片
	 * 
	 * @author GJ
	 * @time 2017年7月6日 下午12:44:39
	 * @param picurl
	 * @return
	 */
	public static boolean isPicture(String picurl) {
		return picurl.matches("[(\\w|\\W)]+\\.(jpg|JPG|jpeg|JPEG|gif|GIF|png|PNG|bmp)");
	}

	/**
	 * 是否是手机
	 * 
	 * @author GJ
	 * @time 2017年7月6日 下午12:44:48
	 * @param phone
	 * @return
	 */
	public static boolean isSelfPhone(Object phone) {
		String regular1="^((13[0-9])|(14[0-9])|(15[0-9])|(16[0-9])|(17[0-9])|(18[0-9])|(19[0-9]))\\d{8}$";

		return phone.toString().matches(regular1);

	}

	/**
	 * 是否是货币
	 * 
	 * @author GJ
	 * @time 2017年7月6日 下午12:44:55
	 * @param money
	 * @return
	 */
	public static boolean isCurrency(Object money) {
		return money.toString().matches("[0-9]+(\\.[0-9]{1,2})?");
	}

	/**
	 * 判断日期
	 * 
	 * @author GJ
	 * @time 2019年1月2日 上午11:26:20
	 * @param dateTime
	 * @return
	 */
	public static boolean isDateTime(Object dateTime) {
		return dateTime.toString().matches(
				"^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1][0-9])|([2][0-4]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$");
	}

	/**
	 * 判断日期
	 * 
	 * @author GJ
	 * @time 2019年2月25日 下午7:44:53
	 * @param date
	 * @return
	 */
	public static boolean isDate(Object date) {
		return date.toString().matches(
				"^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))?$");
	}

	/**
	 * 判断日期
	 * 
	 * @author GJ
	 * @time 2019年1月2日 上午11:29:29
	 * @param time
	 * @return
	 */
	public static boolean isTime(Object time) {
		return time.toString()
				.matches("((((0?[0-9])|([1][0-9])|([2][0-4]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$");
	}

	/**
	 * 判断大陆身份证号
	 * 
	 * @author GJ
	 * @time 2019年1月2日 下午6:04:58
	 * @param idcard
	 * @return
	 */
	public static boolean isDefaultIdCardNo(Object idcard) {
		return idcard.toString()
				.matches("(^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|"
						+ "(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)");
	}

	/**
	 * 测试
	 * 
	 * @author GJ
	 * @time 2017年7月6日 下午12:45:07
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println(isSelfPhone("15311913767"));
	}
}
